
/*
public class PizzaStore {
    SimplePizzaFactory factory;
   public PizzaStore(SimplePizzaFactory factory){
       this.factory = factory;
   }

   public Pizza orderPizza(String type){
       Pizza pizza;
       pizza = factory.createPizza(type);
       pizza.prepare();
       pizza.bake();
       pizza.cut();
       pizza.box();
       return pizza;
   }
}
*/

// pizza店
// pizza 店里引用factory工厂来生产pizza,这种场景下factory依然是公共的。如果开n家店(store)能生产的pizza完全是由factory决定的。
// 问题是 如何实现每家店都可以生产不同风格的pizza呢，毕竟饮食根据不同区域口味和调料有所差异。

public abstract class PizzaStore {
     public Pizza orderPizza(String type){
         Pizza pizza;
         pizza = CreatePizza(type);
         pizza.prepare();
         pizza.bake();
         pizza.cut();
         pizza.box();
         return pizza;

     }

     abstract Pizza CreatePizza(String type);
}

//这是工厂方法，感觉也不是很灵活，把创建pizza的factor工厂类改成CreatePizza方法。生产pizza的方法由每个store的createpizza来制定
/*
简单工厂和工厂方法的比较：

简单工厂把全部的事情，在一个地方都处理完了，然后工厂方法却是创建一个框架，让子类决定要如何实现。比如说，在工厂方法中，CreatePizza
 */